package com.xjj.test.demo.service.impl;

import com.sword.commons.HttpClient.HttpResponse;
import com.sword.woodpecker.autotest.framework.annotation.http.AutoHttpRequest;
import com.sword.woodpecker.autotest.framework.annotation.http.AutoProxy;
import com.xjj.test.demo.api.IHttpApi;
import com.xjj.test.demo.service.IHttpService;
import java.util.Map;
import org.springframework.stereotype.Component;

/**
 * 类描述:〈发送Http请求接口实现类〉
 */
@Component
@AutoProxy//必须要加这个@AutoProxy注解，否则不会执行自动代理
public class HttpService implements IHttpService {

  //必须要加上@AutoHttpRequest注解，表示这个iHttpApi变量会被自动注入，否则会出现空指针异常
  @AutoHttpRequest(required = false)
  IHttpApi iHttpApi;

  /**
   * 方法功能描述: 发送GET请求
   *
   * @param url 请求地址
   * @return com.sword.commons.HttpClient.HttpResponse
   */
  @Override
  public HttpResponse get(String url) {
    //get方法会自动被拦截，并执行代理类中的实际实现
    return iHttpApi.get(url);
  }

  /**
   * 方法功能描述: 发送POST请求
   *
   * @param url    请求地址
   * @param params 请求参数
   * @return com.sword.commons.HttpClient.HttpResponse
   */
  @Override
  public HttpResponse post(String url, Map params) {
    //post方法会自动被拦截，并执行代理类中的实际实现
    return iHttpApi.post(url, params);
  }

  /**
   * 方法功能描述: 发送POST请求
   *
   * @param url    请求地址
   * @param params 请求参数
   * @return com.sword.commons.HttpClient.HttpResponse
   */
  @Override
  public HttpResponse post(String url, String params) {
    //post方法会自动被拦截，并执行代理类中的实际实现
    return iHttpApi.post(url, params);
  }

}
